import axios, { AxiosRequestConfig, AxiosResponse, AxiosError } from 'axios';
import { ElMessage } from 'element-plus';

const $api = axios.create({
  // 配置一个公共的前置链接
  baseURL: 'http://localhost:3030',
});

// 请求拦截
  // 如果localStorage有token我们就携带token
  const token = localStorage.getItem('token');
// // 请求拦截
$api.interceptors.request.use((config: AxiosRequestConfig & any) => {
  // 如果localStorage有token我们就携带token
  const token = localStorage.getItem('token');
  // console.log('token', token);
  if (token) {
    config.headers.Authorization = token;
  }
  return config;
});

// 响应拦截
$api.interceptors.response.use(
  (response: AxiosResponse) => response,
  (err: AxiosError & any) => {
    // 这个函数就是我们请求的时候响应错误的时候要执行一些全局的操作的地方
    console.log('err', err);
    // 在一些特定的状态码下执行对应的操作
    if (err.response.status === 401) {
      ElMessage.warning('token失效请重新登录');
      window.location.href = '/#/login';
    }
    if (err.response.status === 404) {
      ElMessage.warning('接口不存在');
    }
  },
);
export default $api;
